"""AUTO-GENERATED; DO NOT EDIT!
Auto-generated types for YAML-derived feature-class data."""
import attrs
import yaml
from .config_dataclasses import *
from .iterablenamespace import IterableNamespace

@attrs.frozen
class NG911GeodatabaseInfo(yaml.YAMLObject):
    yaml_tag = '!GDBInfo'
    yaml_loader = yaml.SafeLoader
    spatial_reference_factory_code_2d: int
    spatial_reference_factory_code_3d: int
    required_dataset_name: str
    optional_dataset_name: str
    nguid_urn_prefix: str

@attrs.frozen
class NG911DomainNamespace(IterableNamespace[NG911Domain], yaml.YAMLObject, metaclass=YAMLIterableNamespaceMeta):
    yaml_tag = '!CompleteDomainList'
    yaml_loader = yaml.SafeLoader
    AGENCYID: NG911Domain
    COUNTRY: NG911Domain
    COUNTY: NG911Domain
    DIRECTION: NG911Domain
    LEVEL: NG911Domain
    LGCYDIRECTION: NG911Domain
    LGCYSTREETTYPE: NG911Domain
    NUMBER: NG911Domain
    ONEWAY: NG911Domain
    PARITY: NG911Domain
    PLACEMENT: NG911Domain
    PLACETYPE: NG911Domain
    PSAP: NG911Domain
    RCLSIDE: NG911Domain
    ROADCLASS: NG911Domain
    SEPARATOR: NG911Domain
    SERVICEURN: NG911Domain
    STATE: NG911Domain
    STORMSHELTER: NG911Domain
    STREETTYPE: NG911Domain
    TOPOEXCEPT: NG911Domain
    YESNO: NG911Domain

@attrs.frozen
class NG911FieldNamespace(IterableNamespace[NG911Field], yaml.YAMLObject, metaclass=YAMLIterableNamespaceMeta):
    yaml_tag = '!CompleteFieldList'
    yaml_loader = yaml.SafeLoader
    add_l_from: NG911Field
    add_l_pre: NG911Field
    add_l_to: NG911Field
    add_r_from: NG911Field
    add_r_pre: NG911Field
    add_r_to: NG911Field
    adddatauri: NG911Field
    addnumber: NG911Field
    addnumpre: NG911Field
    addnumsuf: NG911Field
    addtnlloc: NG911Field
    agency_id: NG911Field
    altstname1: NG911Field
    altstname2: NG911Field
    altstname3: NG911Field
    avcard_uri: NG911Field
    basement: NG911Field
    bldgname: NG911Field
    bldgunit: NG911Field
    boundlane: NG911Field
    city: NG911Field
    city_l: NG911Field
    city_r: NG911Field
    country: NG911Field
    country_l: NG911Field
    country_r: NG911Field
    county: NG911Field
    county_l: NG911Field
    county_r: NG911Field
    deadend: NG911Field
    discrpagid: NG911Field
    drivetime: NG911Field
    dsplayname: NG911Field
    effectdate: NG911Field
    elevation: NG911Field
    ems: NG911Field
    esn: NG911Field
    esn_l: NG911Field
    esn_r: NG911Field
    esz: NG911Field
    expiredate: NG911Field
    fire: NG911Field
    floor: NG911Field
    fromlevel: NG911Field
    fulladdr: NG911Field
    fullname: NG911Field
    geomsag_l: NG911Field
    geomsag_r: NG911Field
    grpquarter: NG911Field
    initidate: NG911Field
    initisrce: NG911Field
    label: NG911Field
    landmkname: NG911Field
    lanes: NG911Field
    latitude: NG911Field
    law: NG911Field
    lgcyfuladd: NG911Field
    lgcyfulst: NG911Field
    lgcypredir: NG911Field
    lgcypretyp: NG911Field
    lgcystreet: NG911Field
    lgcysufdir: NG911Field
    lgcytype: NG911Field
    local_id: NG911Field
    longitude: NG911Field
    ltdaccess: NG911Field
    milepost: NG911Field
    msagcomm: NG911Field
    msagcomm_l: NG911Field
    msagcomm_r: NG911Field
    nbrhdcomm: NG911Field
    nbrhdcomml: NG911Field
    nbrhdcommr: NG911Field
    nguid_add: NG911Field
    nguid_disc: NG911Field
    nguid_ems: NG911Field
    nguid_esz: NG911Field
    nguid_fire: NG911Field
    nguid_law: NG911Field
    nguid_psap: NG911Field
    nguid_rdcl: NG911Field
    occuptime: NG911Field
    oneway: NG911Field
    parity_l: NG911Field
    parity_r: NG911Field
    placement: NG911Field
    placetype: NG911Field
    postcomm: NG911Field
    postcomm_l: NG911Field
    postcomm_r: NG911Field
    predir: NG911Field
    premod: NG911Field
    pretype: NG911Field
    pretypesep: NG911Field
    psap: NG911Field
    psap_l: NG911Field
    psap_r: NG911Field
    rclmatch: NG911Field
    rclside: NG911Field
    revdate: NG911Field
    reveditor: NG911Field
    roadclass: NG911Field
    roadlength: NG911Field
    room: NG911Field
    seat: NG911Field
    servicenum: NG911Field
    serviceuri: NG911Field
    serviceurn: NG911Field
    speedlimit: NG911Field
    state: NG911Field
    state_l: NG911Field
    state_r: NG911Field
    street: NG911Field
    streettype: NG911Field
    strmsheltr: NG911Field
    submit: NG911Field
    sufdir: NG911Field
    sufmod: NG911Field
    surface: NG911Field
    tolevel: NG911Field
    toll: NG911Field
    topoexcept: NG911Field
    uninccomm: NG911Field
    uninccomml: NG911Field
    uninccommr: NG911Field
    valid_l: NG911Field
    valid_r: NG911Field
    zipcode: NG911Field
    zipcode4: NG911Field
    zipcode_l: NG911Field
    zipcode_r: NG911Field

@attrs.frozen
class NG911AddressPointFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_add: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    fulladdr: NG911Field
    fullname: NG911Field
    label: NG911Field
    addnumpre: NG911Field
    addnumber: NG911Field
    addnumsuf: NG911Field
    premod: NG911Field
    predir: NG911Field
    pretype: NG911Field
    pretypesep: NG911Field
    street: NG911Field
    streettype: NG911Field
    sufdir: NG911Field
    sufmod: NG911Field
    country: NG911Field
    state: NG911Field
    county: NG911Field
    city: NG911Field
    uninccomm: NG911Field
    nbrhdcomm: NG911Field
    esn: NG911Field
    psap: NG911Field
    msagcomm: NG911Field
    postcomm: NG911Field
    zipcode: NG911Field
    zipcode4: NG911Field
    landmkname: NG911Field
    addtnlloc: NG911Field
    bldgname: NG911Field
    floor: NG911Field
    bldgunit: NG911Field
    room: NG911Field
    seat: NG911Field
    grpquarter: NG911Field
    occuptime: NG911Field
    strmsheltr: NG911Field
    basement: NG911Field
    placetype: NG911Field
    placement: NG911Field
    milepost: NG911Field
    longitude: NG911Field
    latitude: NG911Field
    elevation: NG911Field
    adddatauri: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    lgcyfuladd: NG911Field
    lgcyfulst: NG911Field
    lgcypredir: NG911Field
    lgcypretyp: NG911Field
    lgcystreet: NG911Field
    lgcytype: NG911Field
    lgcysufdir: NG911Field
    submit: NG911Field
    topoexcept: NG911Field
    rclmatch: NG911Field
    rclside: NG911Field

@attrs.frozen
class NG911DiscrepancyagencyBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_disc: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911EsbEmsBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_ems: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    avcard_uri: NG911Field
    serviceurn: NG911Field
    serviceuri: NG911Field
    servicenum: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911EsbFireBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_fire: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    avcard_uri: NG911Field
    serviceurn: NG911Field
    serviceuri: NG911Field
    servicenum: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911EsbLawBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_law: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    avcard_uri: NG911Field
    serviceurn: NG911Field
    serviceuri: NG911Field
    servicenum: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911EszBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_esz: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    esn: NG911Field
    esz: NG911Field
    fire: NG911Field
    law: NG911Field
    ems: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911PsapBoundaryFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_psap: NG911Field
    dsplayname: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    avcard_uri: NG911Field
    serviceurn: NG911Field
    serviceuri: NG911Field
    servicenum: NG911Field
    country: NG911Field
    state: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    submit: NG911Field

@attrs.frozen
class NG911RoadCenterlineFieldNamespace(IterableNamespace[NG911Field]):
    discrpagid: NG911Field
    nguid_rdcl: NG911Field
    agency_id: NG911Field
    local_id: NG911Field
    fullname: NG911Field
    label: NG911Field
    add_l_pre: NG911Field
    add_r_pre: NG911Field
    add_l_from: NG911Field
    add_l_to: NG911Field
    add_r_from: NG911Field
    add_r_to: NG911Field
    parity_l: NG911Field
    parity_r: NG911Field
    premod: NG911Field
    predir: NG911Field
    pretype: NG911Field
    pretypesep: NG911Field
    street: NG911Field
    streettype: NG911Field
    sufdir: NG911Field
    sufmod: NG911Field
    country_l: NG911Field
    country_r: NG911Field
    state_l: NG911Field
    state_r: NG911Field
    county_l: NG911Field
    county_r: NG911Field
    city_l: NG911Field
    city_r: NG911Field
    uninccomml: NG911Field
    uninccommr: NG911Field
    nbrhdcomml: NG911Field
    nbrhdcommr: NG911Field
    esn_l: NG911Field
    esn_r: NG911Field
    psap_l: NG911Field
    psap_r: NG911Field
    msagcomm_l: NG911Field
    msagcomm_r: NG911Field
    zipcode_l: NG911Field
    zipcode_r: NG911Field
    postcomm_l: NG911Field
    postcomm_r: NG911Field
    roadclass: NG911Field
    oneway: NG911Field
    speedlimit: NG911Field
    initisrce: NG911Field
    initidate: NG911Field
    reveditor: NG911Field
    revdate: NG911Field
    effectdate: NG911Field
    expiredate: NG911Field
    altstname1: NG911Field
    altstname2: NG911Field
    altstname3: NG911Field
    lgcyfulst: NG911Field
    lgcypredir: NG911Field
    lgcypretyp: NG911Field
    lgcystreet: NG911Field
    lgcytype: NG911Field
    lgcysufdir: NG911Field
    fromlevel: NG911Field
    tolevel: NG911Field
    boundlane: NG911Field
    roadlength: NG911Field
    drivetime: NG911Field
    deadend: NG911Field
    surface: NG911Field
    lanes: NG911Field
    toll: NG911Field
    ltdaccess: NG911Field
    valid_l: NG911Field
    valid_r: NG911Field
    submit: NG911Field
    topoexcept: NG911Field
    geomsag_l: NG911Field
    geomsag_r: NG911Field

@attrs.frozen
class NG911FeatureClassNamespace(IterableNamespace[NG911FeatureClass], yaml.YAMLObject, metaclass=YAMLIterableNamespaceMeta):
    yaml_tag = '!FeatureClassList'
    yaml_loader = yaml.SafeLoader
    address_point: NG911FeatureClass[NG911AddressPointFieldNamespace]
    discrepancyagency_boundary: NG911FeatureClass[NG911DiscrepancyagencyBoundaryFieldNamespace]
    esb_ems_boundary: NG911FeatureClass[NG911EsbEmsBoundaryFieldNamespace]
    esb_fire_boundary: NG911FeatureClass[NG911EsbFireBoundaryFieldNamespace]
    esb_law_boundary: NG911FeatureClass[NG911EsbLawBoundaryFieldNamespace]
    esz_boundary: NG911FeatureClass[NG911EszBoundaryFieldNamespace]
    psap_boundary: NG911FeatureClass[NG911PsapBoundaryFieldNamespace]
    road_centerline: NG911FeatureClass[NG911RoadCenterlineFieldNamespace]
_field_namespace_classes: dict[str, type] = {'AddressPoint': NG911AddressPointFieldNamespace, 'DiscrepancyagencyBoundary': NG911DiscrepancyagencyBoundaryFieldNamespace, 'EsbEmsBoundary': NG911EsbEmsBoundaryFieldNamespace, 'EsbFireBoundary': NG911EsbFireBoundaryFieldNamespace, 'EsbLawBoundary': NG911EsbLawBoundaryFieldNamespace, 'EszBoundary': NG911EszBoundaryFieldNamespace, 'PsapBoundary': NG911PsapBoundaryFieldNamespace, 'RoadCenterline': NG911RoadCenterlineFieldNamespace}

def init_field_namespace(tag: str, field_data: list[NG911Field]) -> IterableNamespace[NG911Field]:
    field_dict = {f.role: f for f in field_data}
    return _field_namespace_classes[tag](**field_dict)
__all__ = ['NG911GeodatabaseInfo', 'NG911DomainNamespace', 'NG911FieldNamespace', 'NG911AddressPointFieldNamespace', 'NG911DiscrepancyagencyBoundaryFieldNamespace', 'NG911EsbEmsBoundaryFieldNamespace', 'NG911EsbFireBoundaryFieldNamespace', 'NG911EsbLawBoundaryFieldNamespace', 'NG911EszBoundaryFieldNamespace', 'NG911PsapBoundaryFieldNamespace', 'NG911RoadCenterlineFieldNamespace', 'NG911FeatureClassNamespace', 'init_field_namespace']